﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;

namespace 数字格式化
{
    class Program
    {
        static void Main(string[] args)
        {
            
            Console.WriteLine(Environment.NewLine + "-----------------32位有符号整数--------------------");

            int int1 = 12345;
            Console.WriteLine("int1:\t" + int1.ToString());//ToString                  12345
            Console.WriteLine("C4:\t" + int1.ToString("C4"));//	货币               ￥12,345.0000
            Console.WriteLine("D8:\t" + int1.ToString("D8"));// 十进制数           00012345
            Console.WriteLine("E:\t" + int1.ToString("E"));//   科学型             1.234500E+004
            Console.WriteLine("F3:\t" + int1.ToString("F3"));// 固定点             12345.000
            Console.WriteLine("G:\t" + int1.ToString("G"));// 常规                 12345
            Console.WriteLine("G2:\t" + int1.ToString("G2"));// 常规               1.2E+04
            Console.WriteLine("N2:\t" + int1.ToString("N2"));// 数字               12,345.00
            Console.WriteLine("0x:\t" + int1.ToString("x8"));//十六进制            00003039
            Console.WriteLine("X:\t" + int1.ToString("X"));//十六进制              3039
            Console.WriteLine("#0.00:\t" + int1.ToString("#0.000"));//格式化       12345.000
            Console.WriteLine("￥#T.0:\t" + int1.ToString("￥#T.0"));//格式化       ￥12345T.0

            Console.WriteLine(Environment.NewLine + "------------------双精度浮点--------------------");

            double double1 = 12345678.12345678;
            Console.WriteLine("double1:\t" + double1.ToString());//ToString            12345678.12345678
            Console.WriteLine("C4:\t" + double1.ToString("C4"));//	货币              ￥12,345,678.1234
            Console.WriteLine("E:\t" + double1.ToString("E"));//   科学型             1.2345678E+007
            Console.WriteLine("F3:\t" + double1.ToString("F3"));// 固定点             12345678.123
            Console.WriteLine("G:\t" + double1.ToString("G"));// 常规                 12345678.12345678
            Console.WriteLine("G2:\t" + double1.ToString("G2"));// 常规               1.2E+07
            Console.WriteLine("N2:\t" + double1.ToString("N2"));// 数字               12,345,678.12
            Console.WriteLine("#0.00:\t" + double1.ToString("#0.000"));//格式化       12345678.123
            Console.WriteLine("￥#T.0:\t" + double1.ToString("￥#T.0"));//格式化       ￥12345678T.1

            //Console.WriteLine(Environment.NewLine + "--------------单精度浮点------------------------");

            //float float1 =float.Parse("12345.12");

            //Console.WriteLine("float1:\t" + float1.ToString());//ToString            12345.12
            //Console.WriteLine("C4:\t" + float1.ToString("C4"));//	货币              ￥12,345.1200
            //Console.WriteLine("E:\t" + float1.ToString("E"));//   科学型             1.234512E+004
            //Console.WriteLine("F3:\t" + float1.ToString("F3"));// 固定点             12345.120
            //Console.WriteLine("G:\t" + float1.ToString("G"));// 常规                 12345.12
            //Console.WriteLine("G2:\t" + float1.ToString("G2"));// 常规               1.2E+04
            //Console.WriteLine("N2:\t" + float1.ToString("N2"));// 数字               12,345.12
            //Console.WriteLine("#0.00:\t" + float1.ToString("#0.000"));//格式化       12345.120
            //Console.WriteLine("￥#T.0:\t" + float1.ToString("￥#T.0"));//格式化       ￥12345T.1

            //Console.WriteLine(Environment.NewLine+"-----------------十进制数---------------------");

            decimal decima1 = 12345678.12345678M;

            Console.WriteLine("decima1:\t" + decima1.ToString());// ToString           12345678.12345678
            Console.WriteLine("C4:\t" + decima1.ToString("C4"));//	货币              ￥12,345,678.1234
            Console.WriteLine("E:\t" + decima1.ToString("E"));//   科学型             1.2345678E+007
            Console.WriteLine("F3:\t" + decima1.ToString("F3"));// 固定点             12345678.123
            Console.WriteLine("G:\t" + decima1.ToString("G"));// 常规                 12345678.12345678
            Console.WriteLine("G2:\t" + decima1.ToString("G2"));// 常规               1.2E+07
            Console.WriteLine("N2:\t" + decima1.ToString("N2"));// 数字               12,345,678.12
            Console.WriteLine("#0.00:\t" + decima1.ToString("#0.000"));//格式化       12345678.123
            Console.WriteLine("￥#T.0:\t" + decima1.ToString("￥#T.0"));//格式化       ￥12345678T.1


            Console.WriteLine(Environment.NewLine + "-----------------日期时间---------------------");

            DateTime dateTime1 = DateTime.Parse("2016-08-03 04:03:01.1234567");

            Console.WriteLine("dateTime1:\t" + dateTime1.ToString());// ToString         2016/08/03 4:03:01   
            Console.WriteLine("d:\t" + dateTime1.ToString("d"));//    小写日期           2016/08/03
            Console.WriteLine("D:\t" + dateTime1.ToString("D"));//  大写短日期           2016年08月03日
            Console.WriteLine("f:\t" + dateTime1.ToString("f"));//  大写短时间           2016年08月03日 4:03 （长日期和短时间）
            Console.WriteLine("F:\t" + dateTime1.ToString("F"));//  大写长时间           2016年08月03日  4:03:01 （长日期和长时间）
            Console.WriteLine("g:\t" + dateTime1.ToString("g"));//    小写时间           2016/08/03 4:03        （长日期和短时间）
            Console.WriteLine("G:\t" + dateTime1.ToString("G"));//  小写长时间           2016/08/03 4:03:01     （长日期和长时间）
            Console.WriteLine("mM:\t" + dateTime1.ToString("M"));//     短日期           8月3日
            Console.WriteLine("rR:\t" + dateTime1.ToString("R"));//    GMT时间           Wed,03 Aug 2016 04:03:01 GMT
            Console.WriteLine("s:\t" + dateTime1.ToString("s"));// ISO8601时间           2016-08-03T04:03:01  
            Console.WriteLine("t:\t" + dateTime1.ToString("t"));//      短时间           4:03
            Console.WriteLine("T:\t" + dateTime1.ToString("T"));//      长时间           4:03:01
            Console.WriteLine("u:\t" + dateTime1.ToString("u"));//      长时间           2016-08-03 04:03:01Z (用于显示通用时间的格式)
            Console.WriteLine("U:\t" + dateTime1.ToString("U"));//      长时间           2016年8月3日 20:03:01 使用通用时间的完整日期和时间
            Console.WriteLine("yY:\t" + dateTime1.ToString("Y"));// 大写短日期           2016年8月

            //自定义格式化 2016-08-03 04:03:01.1234567
            Console.WriteLine("yyyy-MM-dd HH:mm:ss.fffffff:\t" + dateTime1.ToString("yyyy-MM-dd HH:mm:ss.fffffff"));

            //公元2016-八月-星期三 4:3:1.123456 上午
            Console.WriteLine("ggyyyy-MMMM-dddd h:mm:ss.fffffff:\t" + dateTime1.ToString("ggyyyy-MMMM-dddd h:m:s.ffffff tt"));

            //自定义格式化 2016-08-03 04:03:01.1234567 +08:00
            Console.WriteLine("yyyy-MM-dd HH:mm:ss.fffffff:\t" + dateTime1.ToString("yyyy-MM-dd HH:mm:ss.fffffff zzz"));

            Console.WriteLine(Environment.NewLine + "-----------------枚举---------------------");

            数字 enum1 = 数字.壹;

            Console.WriteLine("enum1:\t" + enum1.ToString());// ToString     壹 
            Console.WriteLine("gG:\t" + enum1.ToString("G"));// 默认       壹
            Console.WriteLine("fF:\t" + enum1.ToString("F"));//枚举标记    壹
            Console.WriteLine("dD:\t" + enum1.ToString("D"));//返回整数    1
            Console.WriteLine("xX:\t" + enum1.ToString("x"));//二进制      00000001


            Console.ReadKey();
        }

        public enum 数字
        {
            
            零 = 0,
            /// <summary>
            /// 一
            /// </summary>
            [Description("一")]
            壹 = 1,
            [Description("二")]
            截 = 2,
            参 = 3,
            肆 = 4,
            伍 = 5
        }
    }
}
